﻿namespace Heb2RusEngine
{
    public class HebrewAlphabet
    {
        public const char Alef = '\u05d0';
        public const char Bet = '\u05d1';
        public const char Gimel = '\u05d2';
        public const char Dalet = '\u05d3';
        public const char He = '\u05d4';
        public const char Vav = '\u05d5';
        public const char Zayin = '\u05d6';
        public const char Het = '\u05d7';
        public const char Tet = '\u05d8';
        public const char Yod = '\u05d9';
        public const char Kaf = '\u05db';
        public const char FinalKaf = '\u05da';
        public const char Lamed = '\u05dc';
        public const char Mem = '\u05de';
        public const char FinalMem = '\u05dd';
        public const char Nun = '\u05e0';
        public const char FinalNun = '\u05df';
        public const char Samekh = '\u05e1';
        public const char Ayin = '\u05e2';
        public const char Pe = '\u05e4';
        public const char FinalPe = '\u05e3';
        public const char Tsadi = '\u05e6';
        public const char FinalTsadi = '\u05e5';
        public const char Qof = '\u05e7';
        public const char Resh = '\u05e8';
        public const char Shin = '\u05e9';
        public const char Tav = '\u05ea';

        public const char BetWithDagesh = '\uFB31';
        public const char KafWithDagesh = '\uFB32';
        public const char PeWithDagesh = '\uFB33';
    }

    //http://en.wikipedia.org/wiki/Niqqud
    public class HebrewNiqqud
    {
        public const char Shva = '\u05b0';          //http://en.wikipedia.org/wiki/Shva
        public const char HatavSegol = '\u05b1';    //http://en.wikipedia.org/wiki/Reduced_Segol
        public const char HatavPatah = '\u05b2';    //http://en.wikipedia.org/wiki/Reduced_Patach
        public const char HatavKamatz = '\u05b3';   //http://en.wikipedia.org/wiki/Reduced_Kamatz
        public const char Hiriq = '\u05b4';         //http://en.wikipedia.org/wiki/Hiriq
        public const char Zeire = '\u05b5';         //http://en.wikipedia.org/wiki/Zeire
        public const char Segol = '\u05b6';         //http://en.wikipedia.org/wiki/Segol
        public const char Patach = '\u05b7';        //http://en.wikipedia.org/wiki/Patach
        public const char Kamatz = '\u05b8';        //http://en.wikipedia.org/wiki/Kamatz
        public const char SinDot = '\u05c2';        //http://en.wikipedia.org/wiki/%D7%82#Sin_and_Shin_Dot
        public const char ShinDot = '\u05c1';       //http://en.wikipedia.org/wiki/%D7%82#Sin_and_Shin_Dot
        public const char Holam = '\u05b9';         //http://en.wikipedia.org/wiki/Holam
        public const char Dagesh = '\u05bc';        //http://en.wikipedia.org/wiki/Dagesh
        public const char Shuruk = '\u05bc';        //http://en.wikipedia.org/wiki/Shuruk
        public const char Kubutz = '\u05bb';        //http://en.wikipedia.org/wiki/Kubutz                                
    }

    public class HebrewSpecial
    {
        //public const string NameOfG_d = "יְהֹוָה";
        public static readonly string NameOfG_d = new string(new char[] {HebrewAlphabet.Yod, HebrewAlphabet.He, HebrewAlphabet.Vav, HebrewAlphabet.He});
        //public const string NameOfG_d_WithNiqqud = "יְהֹוָה";
        public static readonly string NameOfG_d_WithNiqqud = new string(new char[] {HebrewAlphabet.Yod, HebrewNiqqud.Shva, HebrewAlphabet.He, HebrewNiqqud.Holam, HebrewAlphabet.Vav, HebrewNiqqud.Kamatz, HebrewAlphabet.He});
        public static readonly string NameOfG_d_2Yod = new string(new char[] { HebrewAlphabet.Yod, HebrewAlphabet.Yod });
        public static readonly string NameOfG_d_With_Prefix_X = new string(new char[]
                                                                                 {
                                                                                     HebrewAlphabet.Yod,
                                                                                     HebrewAlphabet.He, 
                                                                                     HebrewNiqqud.Holam, 
                                                                                     HebrewAlphabet.Vav, 
                                                                                     HebrewNiqqud.Kamatz, 
                                                                                     HebrewAlphabet.He
                                                                                 });
        public static readonly string NameOfG_d_With_Prefix_Bet = new string(new char[]
                                                                                 {
                                                                                     HebrewAlphabet.Bet, 
                                                                                     HebrewNiqqud.Shuruk,
                                                                                     HebrewNiqqud.Patach,
                                                                                     HebrewAlphabet.Yod,
                                                                                     HebrewAlphabet.He, 
                                                                                     HebrewNiqqud.Holam, 
                                                                                     HebrewAlphabet.Vav, 
                                                                                     HebrewNiqqud.Kamatz, 
                                                                                     HebrewAlphabet.He
                                                                                 });
        public static readonly string NameOfG_d_With_Prefix_Kaf = new string(new char[]
                                                                                 {
                                                                                     HebrewAlphabet.Kaf, 
                                                                                     HebrewNiqqud.Shuruk,
                                                                                     HebrewNiqqud.Patach,
                                                                                     HebrewAlphabet.Yod,
                                                                                     HebrewAlphabet.He, 
                                                                                     HebrewNiqqud.Holam, 
                                                                                     HebrewAlphabet.Vav, 
                                                                                     HebrewNiqqud.Kamatz, 
                                                                                     HebrewAlphabet.He
                                                                                 });
        public static readonly string NameOfG_d_With_Prefix_Lamed = new string(new char[]
                                                                                 {
                                                                                     HebrewAlphabet.Lamed, 
                                                                                     HebrewNiqqud.Shuruk,
                                                                                     HebrewNiqqud.Patach,
                                                                                     HebrewAlphabet.Yod,
                                                                                     HebrewAlphabet.He, 
                                                                                     HebrewNiqqud.Holam, 
                                                                                     HebrewAlphabet.Vav, 
                                                                                     HebrewNiqqud.Kamatz, 
                                                                                     HebrewAlphabet.He
                                                                                 });
        public static readonly string NameOfG_d_With_Prefix_Lamed_Patah = new string(new char[]
                                                                                 {
                                                                                     HebrewAlphabet.Lamed, 
                                                                                     HebrewNiqqud.Patach,
                                                                                     HebrewAlphabet.Yod,
                                                                                     HebrewAlphabet.He, 
                                                                                     HebrewNiqqud.Holam, 
                                                                                     HebrewAlphabet.Vav, 
                                                                                     HebrewNiqqud.Kamatz, 
                                                                                     HebrewAlphabet.He
                                                                                 });
        public static readonly string KOL = new string(new char[] { HebrewAlphabet.Kaf, HebrewNiqqud.Dagesh, HebrewNiqqud.Kamatz, HebrewAlphabet.Lamed });
    }
}
